home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-11-25 | 2.5 KB | 89 lines |
- IMPLEMENTATION MODULE WinIcon;
-
- FROM SYSTEM IMPORT ADDRESS,VAL;
-
- FROM AES IMPORT WindowCalc,FormCenter,ObjectDraw,WindowGet;
-
- FROM GEMAESBase IMPORT WorkXYWH,CurrXYWH,WCBorder;
- FROM EasyDialog IMPORT GetObjectXYWH,SetObjectXYWH;
- FROM EasyWindow IMPORT WindowElements,windowlist,createWindow,openWindow,
- rectangle,windowtype,setWindow,RedrawProcType;
-
- PROCEDURE InstallIcon( Window : INTEGER; r : rectangle);
- VAR x,y,w,h : INTEGER;
- win : windowtype;
- BEGIN
- IF (windowlist[Window]#NIL) THEN
- win:=windowlist[Window]^;
- IF win.opened THEN
- GetObjectXYWH(0,win.reference,VAL(CARDINAL,x),VAL(CARDINAL,y),VAL(CARDINAL,w),VAL(CARDINAL,h));
- SetObjectXYWH(0,win.reference,win.work.x+1,win.work.y+1,w,h);
- ObjectDraw(win.reference,0,8,r.x,r.y,r.w,r.h);
- END(*IF*);
- END(*IF*);
- END InstallIcon;
-
- PROCEDURE CreateIconWindow(TreePtr: ADDRESS; Title : ARRAY OF CHAR; x,y,w,h:INTEGER;
- RedrawProc :RedrawProcType;
- Elements : WindowElements):INTEGER;
- VAR Icx,Icy,Icw,Ich :INTEGER;
- xb,yb,hb,wb:INTEGER;
- dx,dy,dw,dh:INTEGER;
- Window :INTEGER;
- win : windowtype;
- BEGIN
- FormCenter(TreePtr,Icx,Icy,Icw,Ich);
- WindowGet(0,WorkXYWH,dx,dy,dw,dh);
- createWindow(Window,x,y,w,h,Elements,Title,TRUE,RedrawProc);
- IF dx>x THEN
- x:=dx;
- END(*IF*);
- IF dy>y THEN
- y:=dy;
- END(*IF*);
- IF (Icw>w) THEN
- w:=Icw;
- END(*IF*);
- IF Ich>h THEN
- h:=Ich;
- END(*IF*);
- IF (windowlist[Window]#NIL) THEN
- win:=windowlist[Window]^;
- WindowCalc(WCBorder,VAL(INTEGER,Elements),x,y,w,h,xb,yb,wb,hb);
- win.min.x:=xb;
- win.min.y:=yb;
- win.min.w:=wb;
- win.min.h:=hb;
- win.snap:=TRUE;
- win.reference:=TreePtr;
- windowlist[Window]^:=win;
- END(*IF*);
- RETURN Window
- END CreateIconWindow;
-
- PROCEDURE OpenIconWindow(Window,x,y,w,h:INTEGER);
- VAR r :rectangle;
- win : windowtype;
- dx,dy,dw,dh:INTEGER;
-
- BEGIN
- WindowGet(0,WorkXYWH,dx,dy,dw,dh);
- IF dx>x THEN
- x:=dx;
- END(*IF*);
- IF dy>y THEN
- y:=dy;
- END(*IF*);
-
- IF (windowlist[Window]#NIL) THEN
- win:=windowlist[Window]^;
- IF w<win.min.w THEN w:=win.min.w END(*IF*);
- IF w<win.min.h THEN w:=win.min.h END(*IF*);
- openWindow(Window,x,y,w,h);
- r.x:=x;r.y:=y;r.h:=h;r.w:=w;
- InstallIcon(Window,r);
- END(*IF*);
- END OpenIconWindow;
-
- END WinIcon.
-